$(()=>{  //es6中的用法
    // 1. 点击刷新我们的图片验证码
    $('.captcha-graph-img img').click(function () {
        // 重新加载一下图片验证码的src即可
        $(this).attr('src','../verification/image_code/?rand=' + Math.random());
    });

    // 2. 校验功能
    // 定义一些状态变量
    let isUsernameReady = false,  // 用户名是否准备好
        isPasswordReady = false,  // 密码是否准备好
        isMobileReady = false,    // 手机号是否准备好
        isSmsCodeReady = false;   // 短信验证码是否准备好

    // 3. 用户名校验(光标离开用户名输入框就校验用户名)
    let $form_msg = $('.form-control');   // 获得表单对象
    let $username = $form_msg.eq(0);      //1. 获得表单中的第一个,用户名输入框的对象
    $username.blur(fnCheckUsername);      //2. 当焦点离开用户名输入框时执行fnCheckUsername这个函数
    function fnCheckUsername() {          //3. 该函数用来校验用户名是否注册过，并响应结果给我们
        isUsernameReady = false;             // 默认未经校验的用户名为假，不通过校验
        let sUsername = $username.val();     // 获得我们输入的用户名
        if(sUsername === ""){                // 判断用户输入的用户名格式是否正确
            message.showError("用户名不能为空！");
        }else if(!(/^\w{5,20}$/).test(sUsername)){
            message.showError("请输入5-20个字符的用户名");
        }else{
            $.ajax({    // 格式正确且不为空则发送ajax到后台（ajax是依赖于浏览器的一种技术）
                url: '../verification/username/'+ sUsername + '/',
                type: 'GET',
                dataType: 'json',
                success: function (res) {
                    if(res.data.count!==0){
                        message.showError(res.data.username+"已经注册,请重新输入！");
                    }else{
                        isUsernameReady = true;
                        message.showInfo(res.data.username+"可以正常使用！");
                    }
                },
                error: function () {
                    message.showError("服务器超时，请重试！");
                }
            });
        }
    }

    // 4. 密码校验
    // 获得用户输入的两次密码的对象
    let $password1 = $form_msg.eq(1),
        $password2 = $form_msg.eq(2);
    // 当焦点离开第二次输入的密码框的时候触发函数
    $password2.blur(fnCheckPassword);
    // 该函数检查用户两次输入的密码是否一样
    function fnCheckPassword() {
        isPasswordReady = false;      // 默认密码错误
        if($password1.val() === ""){
            message.showError("密码不能为空");
        }else if($password1.val() !== $password2.val()){
            message.showError("两次密码输入不一致，请重新输入");
        }else{
            isPasswordReady = true;   // 校验成功后我们设置密码正确
            message.showInfo("密码可以正常使用！");
        }
    }

    // 5. 手机号码校验
    // 获得用户手机号输入框对象
    let $mobile = $form_msg.eq(3);   // 1. 获得表单中的第四个,手机号码输入框的对象
    $mobile.blur(fnCheckMobile);     // 2. 当焦点离开手机号输入框时触发函数
    function fnCheckMobile() {       // 3. 该函数校验手机号码是否正确
        isMobileReady = false;           // 3.1 默认手机号输入错误
        let sMobile = $mobile.val();     // 3.2 获得用户输入的手机号
        if(sMobile === ""){
            message.showError("手机号不能为空");
        }else if(!(/^1[3-9]\d{9}$/).test(sMobile)){
            message.showError("手机号格式不正确");
        }else{
            $                            // 3.3 发送ajax(新的方式写ajax)
                .ajax({                        // 3.3.1.发送的ajax信息
                    url: '../verification/mobile/'+ sMobile + '/',
                    type: 'GET',
                    dataType: 'json',
                })
                .done((res)=>{                 // 3.3.2. 返回成功执行ajax信息，相当于success
                    if(res.data.count!==0){
                        message.showError(res.data.mobile+"已经注册,请重新输入！");
                    }else{
                        isMobileReady = true;  // 3.3.3  符合校验条件设置手机正确
                        message.showInfo(res.data.mobile+"可以正常使用！");
                    }
                })
                .fail(()=>{                    // 3.3.4. 返回失败执行ajax信息，相当于error
                    message.showError("服务器超时！");
                })
        }
    }

});